package com.ruoyi.attendance.mapper;


import com.ruoyi.attendance.domain.Attendance;
import com.ruoyi.attendance.domain.AttendanceStatistics;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;


/**
 * 考勤记录Mapper接口
 */
@Mapper
public interface AttendanceMapper {

    /**
     * 根据用户ID查询考勤记录列表
     */
    List<Attendance> selectListByUserId(Attendance attendance);

     /**
      * 查询考勤记录列表（带分页、日期筛选）
      */
    List<Attendance> selectList(Attendance attendance);


     /**
      * 检查用户今天是否已上班打卡
      */
    int countTodayClockIn(@Param("userId") Long userId, @Param("todayStart") LocalDateTime todayStart, @Param("todayEnd") LocalDateTime todayEnd);

    /**
     * 插入新的考勤记录
     */
    void insert(Attendance attendance);

    /**
     * 更新考勤记录
     */
    void updateById(Attendance attendance);


    /**
     * 检查用户今天是否已下班打卡
     */
    int countTodayClockOut(@Param("userId") Long userId, @Param("todayStart") LocalDateTime todayStart, @Param("todayEnd") LocalDateTime todayEnd);

     /**
      * 获取用户角色类型
      */
    SysUser getRoleType(Long userId);

    Attendance selectByClockInTime(@Param("userId") Long userId, @Param("now") LocalDateTime now);

    /**
     * 新增考勤统计记录
     * @param attendanceStatics
     */
    void addAttendanceStatics(AttendanceStatistics attendanceStatics);
}
